<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
</head>

<body>
    <!-- 
    Promise 承诺/契约/期约
    一个 Promise 必然处于以下几种状态之一：
    待定/挂起态  （pending）: 初始状态，既没有被兑现，也没有被拒绝。
    已兑现/履约态（fulfilled）: 意味着操作成功完成。
    已拒绝/毁约态（rejected）: 意味着操作失败。
     -->
    <script>
        // 先兑现1块钱 期约继续有效
        Promise.resolve(1)

            /* 1年以后 当初的1块变100块 */
            .then(
                value => {
                    console.log("兑现1",value);//1
                    return 100
                }
            )

            /* 1年以后 当初的100块变10000块 */
            .then(
                value => {
                    console.log("兑现2",value);//100   
                    return 10000
                }
            )

            /* 1年以后 当初的10000块变1000000块 */
            .then(
                value => {
                    console.log("兑现3",value);//10000 
                    // return 1000000

                    // Promise对象毁约了，并给出了一个令人信服的理由
                    throw new Error("我妈喊我回家吃饭，咱们改天再聊")
                }
            )

            /* 最终 查看月薪*/
            .then(
                value => {
                    console.log("兑现4",value);//1000000
                }
            )

            // 整条回调链中任意环节出错 代码直接走到catch
            // 捕获一只毁约的理由err
            .catch(
                err => {
                    console.log("发现错误", err)
                }
            )

            // 不管整条链有无错误发生 都一定会执行的代码
            .finally(
                () => console.log("finally/最终/无论如何:生、死、疼讯")
            )

        console.log("请求结束");
    </script>
</body>

</html>